package jdbc.test;
import java.sql.*;
import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;
import java.io.*;

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

public class MysqlDatabase {
	public static void main(String[] args) {
         try {
			BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream("配置文件.xml")));
			Map ms=new HashMap();
			String line;
			while((line=br.readLine())!=null){
				StringTokenizer ls=new StringTokenizer(line,"<>/");
				String tagname = ls.nextToken();
				String tagcontent = ls.nextToken();
				ms.put(tagname, tagcontent);//切出的第一段为标签名---key，第二段为标签体内容---value。存入HashMap中。
				System.out.println(tagname+"-----"+tagcontent);
			}
			MysqlDataSource ds=new MysqlDataSource();
			ds.setServerName((String)ms.get("HostName"));//从Map中用标签名取出标签体内容，作为连库信息，赋给DataSource属性。
			ds.setDatabaseName((String)ms.get("DBname"));
			ds.setPort(Integer.parseInt(((String)ms.get("PortName"))));
			ds.setUser((String)ms.get("UserName"));
			ds.setPassword((String)ms.get("Password"));
			//优点：无论配置文件内容Tag顺序如何改变，切出来的标签名--key，标签体内容--value，都可以用标签名自动查找出标签体内容，
                        //      很好地利用了HasMap的查找功能，实现动态变化适应。
			Connection con=ds.getConnection();
			Statement stm=con.createStatement();
			ResultSet rs=stm.executeQuery("select accountName from accounts");
			while(rs.next()){
				System.out.println(rs.getString(1));
			}
			br.close();
			rs.close();
			con.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
 
}